﻿using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClickLand.Web.UI.WebControls.Contratos;

namespace ClickLand.Web.UI.WebControls
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:ClickLandCedula runat=server/>")]
    public class ClickLandCedula : ComponenteBase, INamingContainer, ICedula 
    {
        #region Atributos

        /// <summary> Control para la lista de las letras </summary>
        private ClickLandDropDownList _ddlLetra;


        /// <summary> Control para el numero del documento </summary>
        private ClickLandExTextBox _tbDocumento;


        private string _keyNatural;
        private string _keyJuridico;
        private bool _esNatural;
        private string _estiloLista;
        private string _estiloText;

        public ClickLandCedula()
        {
            _ddlLetra = new ClickLandDropDownList();
            _tbDocumento = new ClickLandExTextBox();
            _tbDocumento.ValidationType = ClickLandExTextBox.EnumValidationType.OnlyDigit;
            _tbDocumento.ID = "tbDocumento";
        }

        #endregion

        protected override void CreateChildControls()
        {

            Controls.Add(_tbDocumento);
            Controls.Add(_ddlLetra);
        }

        protected override void OnPreRender(EventArgs e)
        {
            InicializarComponente();
        }


        protected void InicializarComponente()
        {

            _ddlLetra.Items.Clear();
            _ddlLetra.Items.Add(new ListItem(" ", ""));
            CargarListaSinValor(_ddlLetra, EsNatural ? _keyNatural : _keyJuridico, false);
            _tbDocumento.CssClass = _estiloText;
            _ddlLetra.CssClass = _estiloLista;

        }

        #region Propiedades

        /// <summary> Propiedad que asigna u obtiene el valor del documento </summary>
        public string Documento
        {
            get { return _ddlLetra.SelectedValue + _tbDocumento; }
            set
            {
                _ddlLetra.SelectedValue = value.Substring(0, 1);
                _tbDocumento.Text = value.Substring(1);
            }
        }

        /// <summary> Propiedad que asigna el nombre de la lista de letras para las personas naturales </summary>
        public string KeyLetrasNatural
        {
            set { _keyNatural = value; }
        }

        /// <summary> Propiedad que asigna el nombre de la lista de lista de letras para personas juridicas </summary>
        public string KeyLetrasJurido
        {
            set { _keyJuridico = value; }
        }

        /// <summary> Propiedad que asigna el comportamiento del control </summary>
        public bool EsNatural
        {
            get { return _esNatural; }
            set
            {
                _esNatural = value;
                InicializarComponente();
            }
        }

        /// <summary> Propiedad que asgina el stilo del dropdownlist </summary>
        public string StyleList
        {
            set { _estiloLista = value; }
        }

        /// <summary> Propiedad que asigna el stilo del textbox </summary>
        public string StyleText
        {
            set { _estiloText = value; }
        }

        #endregion
    }
}
